package com.iring.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

import com.iring.service.common.impl.PayReqServiceImpl;


/**
 * websocket配置信息
 *
 * @author wanggan
 */
@ConditionalOnClass(PayReqServiceImpl.class)
@Configuration
@EnableWebSocketMessageBroker
// 通过EnableWebSocketMessageBroker 开启使用STOMP协议来传输基于代理(message broker)的消息,此时浏览器支持使用@MessageMapping
// 就像支持@RequestMapping一样。
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        // 在topic和user这两个域上可以向客户端发消息
        config.enableSimpleBroker("/pay");
        // 这句话表示给指定用户发送一对一的主题前缀是"/top"。
        config.setUserDestinationPrefix("/pay");
        config.setApplicationDestinationPrefixes("/paypal","/alipay");
    }

    @Override
    // endPoint 注册协议节点,并映射指定的URl
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 这个和客户端创建连接时的url有关，其中setAllowedOrigins()方法表示允许连接的域名，withSockJS()方法表示支持以SockJS方式连接服务器。
        registry.addEndpoint("/websocket")
                .setAllowedOrigins("*")
                .withSockJS();
    }

}
